﻿using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Runtime.Remoting.Messaging;
using System.Text;
using System.Threading.Tasks;

namespace Sundry.DAL
{
    public class DbContextFactory
    {
        /// <summary>
        /// 获取当前线程内的数据上下文，如果当前线程内没有上下文，那么创建一个上下文，
        /// </summary>
        /// <returns></returns>
        public static DbContext GetCurrentDbConText()
        {
            //当第二次执行的时候直接取出线程嘈里面的对象
            //CallContext:是线程内部唯一的独用的数据槽(一块内存空间)
            //数据存储在线程栈中
            //线程内共享一个单例
            DbContext dbContext = CallContext.GetData("Sundry") as DbContext;
            if (dbContext == null)
            {
                dbContext = new SundryContext();
                CallContext.SetData("Sundry", dbContext);
            }
            return dbContext;
        }
    }
}
